Table of Contents Preface Unicode (UTF-8) Support, Phase 1 Section 1 DBMS and Mail-Merge Support 1.1 Overview 1.1.1 DBMS support 1.1.2 Why require Oracle 8 or higher? 1.1.3 Mail-Merge 1.2 Pre-Installation Tasks 1.2.1 Selecting a Suitable DBMS Product 1.3 Installation 1.3.1 Windows 1.3.2 OpenVMS Alpha 1.3.3 Unix 1.3.4 Verification 1.4 Post-Installation Tasks 1.4.1 Mail-Merge 1.4.2 ODBC Interface 1.4.2.1 ODBC Error "Data Source Name Not Found and No Default Driver Specified" Under Windows x64 1.4.3 OCI Interface 1.4.4 CLI Interface 1.4.5 unixODBC (UODBC) Interface 1.4.6 Connecting to multiple simultaneous database sources 1.4.7 Generic DBMS Post-Installation Tasks 1.4.8 Performance Options 1.5 Creating DBMS Lists 1.5.1 Configuring a List to Use the DBMS 1.5.2 Importing Subscribers into a DBMS List 1.5.3 ADD IMPORT Benchmark 1.5.4 Updating DBMS Lists from an External Application 1.5.5 Format of the OPTIONS Column 1.5.6 Sample OPTIONS Column Settings 1.5.7 Preserving Options When Migrating from Non-DBMS to DBMS Lists 1.6 Using the Mail-Merge Functions 1.6.1 Using the Web Interface 1.6.2 Sending DISTRIBUTE Jobs to LISTSERV 1.6.2.1 DISTRIBUTE Job with DBMS Back-End 1.6.2.2 DISTRIBUTE Job with Existing LISTSERV List 1.6.2.3 DISTRIBUTE Job with External Mail-Merge Data 1.6.2.4 Automatic Bounce Processing 1.6.2.5 Using DBMS or List-Based Jobs without Mail-Merge 1.6.3 Using Substitutions 1.6.3.1 Using Command Tickets 1.6.3.2 Performance Considerations with Command Tickets 1.6.3.3 New Substitutions Available 1.6.4 Using Conditional Blocks 1.6.4.1 Using &*INDEX to select random samples 1.6.4.2 Using the PARTS option 1.7 LISTSERV LDAP and Dynamic Query List (DQL) support 1.8 Installing and configuring unixODBC with LISTSERV and MySQL 1.8.1 MySQL DBMS 1.8.2 MyODBC Driver 1.8.3 unixODBC 1.8.4 Creating a unixODBC System DSN for LISTSERV 1.8.5 Creating a MySQL User and Database/Schema for LISTSERV 1.8.6 Configure LISTSERV Support for unixODBC 1.8.7 Connecting to External MySQL Databases 1.8.8 References Section 2 Commands-Job Feature and CJLI Interpreter 2.1 The JOB Entity 2.2 Control Cards – General Syntax Rules 2.3 The JOB Control Card 2.4 The EOJ Control Card 2.5 The DD Control Card 2.6 The //*MSG Control Card 2.7 Special Considerations Section 3 Delayed Mailing List Posting Section 4 List Exits 4.1 What is a List Exit? 4.2 List Exit Points 4.2.1 ADD/SUBSCRIBE Exit Points 4.2.2 DELETE/SIGNOFF/CHANGE Entry Points 4.2.3 Other Exit Points 4.2.4 General Remarks 4.3 Local Command Definition (non-VM) 4.4 SPAM_EXIT 4.4.1 Formal documentation 4.4.2 Practical Application 4.4.2.1 Step-by-Step Instructions 4.5 A Practical Example: HAPPY99 Section 5 SMTPL-Level Spam Control for Windows 5.1 Enabling 5.2 Configuring LISTSERV to Use SpamAssasin Section 6 Feedback Loop Auto-Processing 6.1 Configuring the SPAM_FEEDBACK_PROBE Variable 6.2 Configuring the SPAM_FEEDBACK_ACTION Configuration Variable 6.3 Configuring the SPAM_FEEDBACK_EXCLUDE Variables 6.4 Testing 6.5 Challenges and Advice 6.6 Future Direction 6.7 Known Issues and Restrictions Section 7 LISTSERV and LDAP 7.1 Configuring LDAP in LISTSERV 7.2 Using LDAP for Mail-Merge 7.3 Using LDAP for Authentication 7.3.1 The LDAP Authentication Process 7.3.2 A Note on the “Require SSL” Option 7.3.3 Using the Optional LDAP_BW_Bind Configuration Variable 7.4 Using LDAP Over SSL for the Solaris Operating System 7.4.1 SCENARIO 1: Using the Solaris 8 LISTSERV Kit on any Version of Solaris 7.4.2 SCENARIO 2: Solaris 8 with the Solaris 10 LISTSERV kit 7.4.3 SCENARIO 3: Solaris 9 with the Solaris 10 LISTSERV kit 7.4.4 SCENARIO 4: Solaris 10 with the Solaris 10 LISTERV kit 7.4.5 Generic Solaris Instructions 7.4.6 Instructions for OpenLDAP 7.5 Dynamic Queries 7.6 Known issues and restrictions Section 8 Dynamic Queries 8.1 Dynamic Query Concepts 8.2 Defining Dynamic Queries 8.3 Query Examples 8.4 Using Dynamic Queries for Access Control 8.5 Creating Dynamic Sub-Lists 8.5.1 Why not create plain dynamic lists instead? 8.6 Creating a Dynamic Query Exit to Access Custom Data Sources 8.6.1 The Result File 8.6.2 Plain-Text Counted Format 8.6.3 Example 8.7 Dynamic Queries and Security 8.8 Known Issues and Restrictions Section 9 Relayed File Distribution & theDISTRIBUTE Command 9.1 Relayed File Distribution 9.2 Relayed File Distribution Requests 9.3 Creating and Sending a Mail RFDR (“DISTRIBUTE”) Job 9.3.1 RFDR Job Options 9.3.2 DISTRIBUTE Command Options 9.4 Advanced LISTESRV Applications Using DISTRIBUTE 9.4.1 "List-free" bounce processing for one-shot lists 9.4.2 Sending Pre-Approved Messages to Moderated Lists Section 10 The LISTSERV TCPGUI Interface 10.1 Setting Up the TCPGUI Interface 10.2 Running lcmdx 10.3 Sending LISTSERV Commands Directly From Your Application 10.4 Advanced TCPGUI Programming Issues 10.4.1 Creating or Replacing a List Header 10.4.2 Adding or Replacing a Password 10.4.3 Bulk Operations 10.4.4 Commands that Respond Over Email 10.4.5 Application-Friendly Commands 10.4.5.1 QUERY 10.4.5.2 QUERY DEFSUB 10.4.5.3 SCAN 10.4.6 Error handling 10.5 LCMDX.C Section 11 Archive Search Functions using Email 11.1 Basic Search Session 11.2 Narrowing the Search 11.3 The SEARCH Command 11.3.1 Basic Search Function 11.3.2 Date Specifications 11.3.3 Keyword Search Specifications 11.3.4 Phonetic Search 11.3.5 What to do about “100 matches (more available)” 11.3.6 Specifying the Last “n” Posts as a Range 11.3.7 Exact Syntax Description 11.3.7.1 General Syntax 11.3.7.2 Keyword Rules Specification 11.3.7.3 Search Rules Specification 11.3.7.4 Reserved Words and Quoting Section 12 SMTP Worker Pool Support Section 13 Using DomainKeys with LISTSERV 13.1 Creating DomainKeys RSA keys and Configuring DNS 13.2 Testing your DomainKeys DNS Records 13.3 LISTSERV Configuration 13.4 Starting LISTSERV with DomainKeys support 13.5 Using DomainKeys with LISTSERV 13.5.1 With Mailing Lists 13.5.2 In DISTRIBUTE jobs 13.5.3 Signing Other Types of Messages 13.5.4 Restrictions and Implementation Choices